import * as TYPE from "./mutation-types";

export default {
    [TYPE.INCREASE](state){
      state.count++;
    },
    [TYPE.DECREASE](state){
      state.count--;
    },
    [TYPE.ARGUEMENT](state,Payload){
      // state:表示状态对象
      // Payload：（有效负载）表示传过来的参数
      console.log(Payload)
      state.count+=Payload.num;
    },
    changeName(state,Payload){
      // 已经存在于store中的属性可以修改，是响应式的
      // state.person.name=Payload
      // 不存在于store中的属性可以修改，但是不是响应式的
      // state.person.friends=Payload;

      // 要做到不存在的属性也是响应式的，需要特定的方法

      // 数组中通过下标操作数据的增、删、改，是不能做到数据响应式的
      // state.students[0]={name:"张三",age:98}
      // state.students[4]={name:"张三",age:98}
      // delete state.students[1];

      // 数组中的响应式方法有：push\unshift\pop\shift\splice
      // state.students.push({name:"张三",age:98});
      // state.students.splice(2,1);

      // 对象中使用点访问法或者空括号访问法增加属性，数据不是响应式的
      // 对象中使用delete关键字删除属性，数据不是响应式的
      // delete state.person.age;

      // Vue.set方法：可以同时用于对象和数组的增加/修改数据的方法，数据是响应式的
      // Vue.set(state.person,"friends",Payload);
      // Vue.set(state.students,4,{name:"小王",age:33});

      // Vue.delete方法：可以同时用于对象和数组的删除数据的方法，数据是响应式的
      // Vue.delete(state.person,"age");
      // Vue.delete(state.students,2);

    },
    changeName2(state,Payload){
      setTimeout(()=>{
        state.person.name=Payload;
      },5000);
    },
    changeName3(state,Payload){
        state.person.name=Payload;
    }
  }